﻿using System;
using System.Windows.Forms;
using LayerEntity.Hotel;
using LayerLogic;
using DevExpress.XtraEditors;
using System.Data;
using DevExpress.XtraGrid.Views.Grid;
using System.Drawing;
namespace System2012.Hotel
{
    public partial class FrmHabitacion : DevExpress.XtraEditors.XtraForm
    {

        #region Variables
        /// <summary>
        /// Indica si estamos editanado o creando uno Nuevo
        /// 0: Nuevo Documento
        /// 1: Editando y Guardando
        /// </summary>
        int operacion = 0;
        /// <summary>
        /// tblHotel almacenmos toda la informacion del listado de hoteles 
        /// donde recuperamos los datos para la manipulacion
        /// </summary>
        DataTable tblHotel;
        /// <summary>
        /// metodos y funciones globales de ayuda del sistema
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        GUtil util = new GUtil();
        /// <summary>
        /// idtarifa int:almacen el id de la tarifa cuando se edita una habitacion para ser actualizado los precios
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        int idtarifa=0;
        /// <summary>
        /// tblTarifa almacen los registros de los precios de ls habitaciones
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        DataTable tblTarifa;
        /// <summary>
        /// idHbaitacion: lamacen el codigo princeipal de la habitacion
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        int idHbaitacion=0;
        #endregion

        #region Funciones de Ayuda
        private void PresionadoTeclas(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter || e.KeyCode == Keys.Down)
            {
                if (sender == txtidHabitacion)
                {
                    CbHotel.Focus();
                }
               
                if (sender == txtNroHabitacion)
                {
                    txtNroCamas.Focus();
                }
                if (sender == txtNroCamas)
                {
                    CbListPrecios.Focus();
                }
                
                if (sender == txtPrecio1)
                {
                    txtPrecio2.Focus();
                }
                if (sender == txtPrecio2)
                {
                    txtPrecio3.Focus();
                }
                if (sender == txtPrecio3)
                {
                    txtPrecio4.Focus();
                }
                if (sender == txtPrecio4)
                {
                    txtPrecio5.Focus();
                }
                if (sender == txtPrecio5)
                {
                    CbListEstado.Focus();
                }

            }
            if (e.KeyCode == Keys.Enter || e.KeyCode == Keys.Right)
            {
                if (sender == CbHotel)
                {
                    CbPisosHotel.Focus();
                }
                if (sender == CbPisosHotel)
                {
                    CbTipohabitacion.Focus();
                }
                if (sender == CbTipohabitacion)
                {
                    txtNroHabitacion.Focus();
                }
                if (sender == CbListPrecios)
                {
                    CBMoneda.Focus();
                }
                if (sender == CBMoneda)
                {
                    txtPrecio1.Focus();
                }

            }
            if (e.KeyCode == Keys.Up)
            {
                
                if (sender == txtNroHabitacion)
                {
                    CbTipohabitacion.Focus();
                }
                if (sender == txtNroCamas)
                {
                    txtNroHabitacion.Focus();
                }
                              
                if (sender == txtPrecio1)
                {
                    CBMoneda.Focus();
                }
                if (sender == txtPrecio2)
                {
                    txtPrecio1.Focus();
                }
                if (sender == txtPrecio3)
                {
                 txtPrecio2.Focus();
                }
                if (sender ==txtPrecio4 )
                {
                    txtPrecio3.Focus();
                }
                if (sender ==txtPrecio5 )
                {
                    txtPrecio4.Focus();
                }
                if (sender == CbListEstado)
                {
                    txtPrecio5.Focus();
                }
            }
            if (e.KeyCode == Keys.Left)
            {
                if (sender ==CbListPrecios )
                {
                    txtNroCamas.Focus();
                }
            }

        }
        public void RecControles(Control control)
        {
            //Recorremos con un ciclo for each cada control que hay en la colección Controls
            foreach (Control contHijo in control.Controls)
            {
                //Preguntamos si el control tiene uno o mas controles dentro del mismo con la propiedad 'HasChildren'
                //Si el control tiene 1 o más controles, entonces llamamos al procedimiento de forma recursiva, para que siga recorriendo los demás controles 
                if (contHijo.HasChildren) this.RecControles(contHijo);
                //Aqui va la lógica de lo queramos hacer, en mi ejemplo, voy a pintar de color azul el fondo de todos los controles
               // Asignamos el Evento para los desplazamientos de los controles
                contHijo.KeyDown += new KeyEventHandler(PresionadoTeclas);
            }
        }
        
        void ActualizarLista(EnumOperaciones op)
        {
            if (op == EnumOperaciones.AddCollection)
            {
               // DataTable dtb = System2012.SystemUtils.MantenanceHabitacion.getHabitaciones();
               // gridControl2.DataSource = dtb;// System2012.SystemUtils.MantenanceHabitacion.getHabitaciones();
               // gridControl2.RefreshDataSource();
            }
        }
        #endregion
        #region VALIDACIONES
        private bool validadatos()
        {


            bool res = false;
            if (this.CbHotel.ItemIndex == -1)
            {
                XtraMessageBox.Show(this, "Debe de seleccionar el Hotel" + this.CbHotel.ItemIndex, "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
            else
            {
                if (this.CbPisosHotel.ItemIndex == -1)
                {
                    XtraMessageBox.Show(this, "Debe de seleccionar el Piso a la \nque pertenece la habitacion" + this.CbHotel.ItemIndex, "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                }
                else
                {
                    if (this.CbTipohabitacion.ItemIndex == -1)
                    {
                        XtraMessageBox.Show(this, "Debe de seleccionar el tipo de  habitacion" + this.CbHotel.ItemIndex, "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    }
                    else
                    {
                        if (this.CbListPrecios.ItemIndex == -1)
                        {
                            XtraMessageBox.Show(this, "Debe de seleccionar la Lista de Precios" + this.CbHotel.ItemIndex, "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                        }
                        else
                        {
                            if (this.CBMoneda.ItemIndex == -1)
                            {
                                XtraMessageBox.Show(this, "Debe de seleccionar el tipo de moneda" + this.CbHotel.ItemIndex, "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                            }
                            else
                            {
                                if (txtNroHabitacion.Text.Trim() == string.Empty)
                                {
                                    res = false;
                                    XtraMessageBox.Show(this, "DEBE DE INGRESAR EL NRO.HABITACIÓN", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                                }
                                else
                                {
                                    if (txtNroCamas.Text.Trim() == string.Empty)
                                    {
                                        res = false;
                                        XtraMessageBox.Show(this, "DEBE DE INGRESAR EL NRO.CAMAS", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                                    }
                                    else
                                    {
                                        if (txtPrecio1.Text.Trim() == string.Empty)
                                        {
                                            res = false;
                                            XtraMessageBox.Show(this, "DEBE DE INGRESAR EL PRECIO1", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                                        }
                                        else
                                        {
                                            if (txtPrecio2.Text.Trim() == string.Empty)
                                            {
                                                res = false;
                                                XtraMessageBox.Show(this, "DEBE DE INGRESAR EL PRECIO2", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                                            }
                                            else
                                            {
                                                if (txtPrecio3.Text.Trim() == string.Empty)
                                                {
                                                    res = false;
                                                    XtraMessageBox.Show(this, "DEBE DE INGRESAR EL PRECIO3", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                                                }
                                                else
                                                {
                                                    if (txtPrecio4.Text.Trim() == string.Empty)
                                                    {
                                                        res = false;
                                                        XtraMessageBox.Show(this, "DEBE DE INGRESAR EL PRECIO4", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                                                    }
                                                    else
                                                    {
                                                        if (txtPrecio5.Text.Trim() == string.Empty)
                                                        {
                                                            res = false;
                                                            XtraMessageBox.Show(this, "DEBE DE INGRESAR EL PRECIO5", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                                                        }
                                                        else
                                                        {
                                                            res = true;
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }

                                }
                            }
                        }
                    }

                }
            }
            return res;
        }
        #endregion

        #region Metodos
        private void NuevoDocumento()
        {
            util.RecControles(this);
            this.operacion = 0;
            Habilitar(false, false);
            CbListPrecios.Enabled = true;
            //CbHotel.EditValue = string.Empty;
        }
        private void NevaTarifa()
        {
            this.operacion = 0;
            this.txtPrecio1.Text = "0";
            this.txtPrecio2.Text = "0";
            this.txtPrecio3.Text = "0";
            this.txtPrecio4.Text = "0";
            this.txtPrecio5.Text = "0";
            CbListPrecios.Enabled = true;
        }
        private void Habilitar(bool est,bool res)
        {
            this.btnGrabarTarifa.Enabled = est;
            this.btnEditarTarifa.Enabled = res;
            this.btnActualizarTarifa.Enabled = res;
            this.btnEliminar.Enabled = est;
            CbListPrecios.Enabled = res;
          
        }
        private void Operaciones()
        {
            EHabitacion objH = new EHabitacion();
            ETarifaHotel objT = new ETarifaHotel();
            objH.Id_habitacion = this.operacion == 0 ? 0 : int.Parse(this.txtidHabitacion.EditValue.ToString()); 
            objH.Num_habitacion = txtNroHabitacion.EditValue.ToString();
            objH.Id_tipohabitacion = int.Parse(this.CbTipohabitacion.EditValue.ToString());
            objH.Capacidad = int.Parse(this.txtNroCamas.EditValue.ToString());
            objH.Piso_habitacion = 0;
            objH.Fecha = DateTime.Today.Date;
            objH.Genera_almacen = string.Empty;
            objH.Id_estado = int.Parse(CbListEstado.EditValue.ToString());
            objH.Id_pisohotel = int.Parse(this.CbPisosHotel.EditValue.ToString());
            objT.id_estado = objH.Id_estado = int.Parse(CbListEstado.EditValue.ToString());
            objT.id_tarifa = idtarifa;
            objT.id_lista_hotel = int.Parse(this.CbListPrecios.EditValue.ToString());
            objT.id_moneda = int.Parse(this.CBMoneda.EditValue.ToString());
            objT.precio1 = double.Parse(this.txtPrecio1.EditValue.ToString());
            objT.precio2 = double.Parse(this.txtPrecio2.EditValue.ToString());
            objT.precio3 = double.Parse(this.txtPrecio3.EditValue.ToString());
            objT.precio4 = double.Parse(this.txtPrecio4.EditValue.ToString());
            objT.precio5 = double.Parse(this.txtPrecio5.EditValue.ToString());
            String resultado = System2012.SystemUtils.MantenanceHabitacion.MantenimientoHabitaciones(objH, objT, this.operacion == 0 ? EnumOperaciones.Insertar : EnumOperaciones.Actualizar);
            System2012.SystemUtils.MantenanceHabitacion.AddHabitacion(objH);
            if (resultado.Substring(0, 1) == "0")
            {
                XtraMessageBox.Show(this, "PROCESO EFECTUADO CON EXITO", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                if (resultado == "-10")
                {
                    XtraMessageBox.Show("El nro de Habitacion ya esta registrado");
                }
                else
                {
                    if (resultado == "-1")
                    {
                        XtraMessageBox.Show("Incosistencia inesperada al registar Habitaciones");
                    }
                    else
                    {
                        XtraMessageBox.Show("Inconsitencias : " + resultado);
                    }
                }
            }
            intProcesoActivo = 6;
            if (!BGWLoadList.IsBusy) BGWLoadList.RunWorkerAsync();
        }
        private void GrabarTarifas()
        {
            ETarifaHotel objT = new ETarifaHotel();
            objT.id_tarifa = idtarifa;
            objT.id_habitacion = this.idHbaitacion;
            objT.id_estado = int.Parse(CbListEstado.EditValue.ToString());
            objT.id_lista_hotel = int.Parse(this.CbListPrecios.EditValue.ToString());
            objT.id_moneda = int.Parse(this.CBMoneda.EditValue.ToString());
            objT.precio1 = double.Parse(this.txtPrecio1.EditValue.ToString());
            objT.precio2 = double.Parse(this.txtPrecio2.EditValue.ToString());
            objT.precio3 = double.Parse(this.txtPrecio3.EditValue.ToString());
            objT.precio4 = double.Parse(this.txtPrecio4.EditValue.ToString());
            objT.precio5 = double.Parse(this.txtPrecio5.EditValue.ToString());
            String resultado = System2012.SystemUtils.MantenanceHabitacion.MantenimientoTarifas(objT, this.operacion == 0 ? EnumOperaciones.Insertar : EnumOperaciones.Actualizar);
            if (resultado == "0")
            {
                XtraMessageBox.Show(this, "PROCESO EFECTUADO CON EXITO", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                if (resultado == "-11")
                {
                    XtraMessageBox.Show(this, "INCONSISTENCIA INESPERADA \n AL MOMENTO DE REGISTAR LA TARIFA", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                else
                {
                    if (resultado == "-20")
                    {
                        XtraMessageBox.Show(this, "NO HA SELECCIONADO NINGUNA HABITACION\n PARA ESTA TARIFA", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                    else
                    {
                        if (resultado == "-12")
                        {
                            XtraMessageBox.Show(this, "INCONSISTENCIA INESPERADA \n AL MOMENTO DE ACTUALIZAR LA TARIFA", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        }
                        else
                        {
                            if (resultado == "-22")
                            {
                                XtraMessageBox.Show(this, "NO HA SELECCIONADO NINGUNA TARIFA \nPARA REALIZAR ESTE PROCESO", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            }
                        }
                    }
                }
            }

            intProcesoActivo = 6;
            if (!BGWLoadList.IsBusy) BGWLoadList.RunWorkerAsync();
          //  MessageBox.Show(this, resultado);
        }
        #endregion
       
        public FrmHabitacion()
        {
            this.InitializeComponent();
            System2012.SystemUtils.MantenanceHabitacion.ActualizarLista +=new LayerLogic.Hotel.LHabitacion.Update( ActualizarLista );
            RecControles(this);
        }
        private void ClickItem(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            if ((string)e.Item.Tag == "Exportar")
            {
                SaveFileDialog saveFileDialog1 = new SaveFileDialog();
                /*saveFileDialog1.DefaultExt = "txt";
                saveFileDialog1.Filter = "Archivos de Texto (*.txt)|*.txt";
                */
                saveFileDialog1.DefaultExt = "xlsx";
                saveFileDialog1.Filter = "Archivos de Excel 2007 (*.xlsx)|*.xlsx";
                
                if (saveFileDialog1.ShowDialog() == DialogResult.OK)
                {
                    this.gridControl2.ExportToXlsx(saveFileDialog1.FileName);
                   // this.gridControl2.ExportToPdf(saveFileDialog1.FileName);
                }
            }
            if ((string)e.Item.Tag == "Nuevo")
            {
                this.NuevoDocumento();

            }
            if ((string)e.Item.Tag == "Grabar")
            {
                if (this.validadatos() == true)
                {
                    this.Operaciones();
                }
                
                // MessageBox.Show(resultado);
            //   if (!BGWLoadInformacion.IsBusy) this.BGWLoadInformacion.RunWorkerAsync(objH);
            }

        }
        
        private void AvanceProceso(object sender, System.ComponentModel.ProgressChangedEventArgs e)
        {
            this.barEditItem1.Caption = e.UserState.ToString();
            this.barEditItem1.EditValue = e.ProgressPercentage;
        }
       
        private void FrmHabitacion_Load(object sender, EventArgs e)
        {
            intProcesoActivo = 1;
            if (!BGWLoadList.IsBusy) this.BGWLoadList.RunWorkerAsync();
        }
                
        /// <summary>
        /// Especifica la Operacion Actual Ejecutando
        /// 
        /// 0: Load Informacion de estados.
        /// 1: Load Los tipos de Documentos Existentes.
        /// 2: Load Informacion de Documentos.
        /// 3: Save Documento
        /// </summary>
        int estadoOperacion = 0;
        private void BGWLoadInformacion_DoWork_1(object sender, System.ComponentModel.DoWorkEventArgs e)
        {
            if (this.estadoOperacion == 0)
            {
            }
            if (this.estadoOperacion == 1)
            {
            }
            if (this.estadoOperacion == 2)
            {
            }
            if (this.estadoOperacion == 3)
            {
            }
            this.BGWLoadInformacion.ReportProgress(30, "Saving Documento");
            EHabitacion doc = (EHabitacion)e.Argument;
            ETarifaHotel tar = (ETarifaHotel)e.Argument;
            if (doc != null)
            {
                String resultado = System2012.SystemUtils.MantenanceHabitacion.MantenimientoHabitaciones(doc,tar, this.operacion == 0 ? EnumOperaciones.Insertar : EnumOperaciones.Actualizar);
                System2012.SystemUtils.MantenanceHabitacion.AddHabitacion(doc);

                if (resultado.Substring(0,1) == "0")
                {
                    XtraMessageBox.Show(this,"PROCESO EFECTUADO CON EXITO","AVISO",MessageBoxButtons.OK,MessageBoxIcon.Information);
                }
                else
                {
                    if (resultado == "-10")
                    {
                        XtraMessageBox.Show("El nro de Habitacion ya esta registrado");
                    }
                    else
                    {
                        if (resultado == "-1")
                        {
                            XtraMessageBox.Show("Incosistencia inesperada al registar Habitaciones");
                        }
                        else
                        {
                            XtraMessageBox.Show("Inconsitencias : " + resultado);
                        }
                    }
                }
                //MessageBox.Show(resultado);
              //  if (resultado.Equals("0"))
               // {
                  //  doc.Id_habitacion = resultado;
                  //  System2012.SystemUtils.RecodManajerHotel.AddDocumento(doc);
               // }
            }
            this.BGWLoadInformacion.ReportProgress(100, "Completado");
        }

        #region Proceso de carga en Background
        /// <summary>
        /// Controla los Background a Disparar para cargar las listas, los valores que toma son:
        /// 
        /// 1.- Load informacion de Hoteles
        /// 2.- Load Informacion de Pisos de Hoteles
        /// 3.- Load Informacion de Tipos de habitaciones
        /// 4.- Load de Listas de Precios
        /// 5.- Load Informacion de las Habitaciones Registradas
        /// </summary>
        int intProcesoActivo = 0;       

        private void BgwLoadListDoWork(object sender, System.ComponentModel.DoWorkEventArgs e)
        {
            if (intProcesoActivo == 1) {
                this.BGWLoadList.ReportProgress(30, "Cargando Hoteles");
                e.Result = SystemUtils.RecodManajerHotel.GetHoteles();
                this.BGWLoadList.ReportProgress(100, "Completado");
            }

            if (intProcesoActivo == 2) {
                this.BGWLoadList.ReportProgress(30, "Cargando Pisos de Hotel");
                e.Result = SystemUtils.RecodManajerHotel.GetPisosHotel();
                this.BGWLoadList.ReportProgress(100, "Completado");
            }

            if (intProcesoActivo == 3) {
                this.BGWLoadList.ReportProgress(30, "Cargando Hoteles");
                e.Result = SystemUtils.RecodManajerHotel.GetTiposHabitaciones();
                this.BGWLoadList.ReportProgress(100, "Completado");
            
            }
            if (intProcesoActivo == 4) {
                this.BGWLoadList.ReportProgress(30, "Cargando lista de Precios");
                e.Result = SystemUtils.RecodManajerproducto.GetListaPrecios();
                this.BGWLoadList.ReportProgress(100, "Completado");
            }
            if (intProcesoActivo == 5) {
                this.BGWLoadList.ReportProgress(30, "Cargando lista de Precios");
                e.Result = SystemUtils.RecordManagerCommonList.GetMoneda();
                this.BGWLoadList.ReportProgress(100, "Completado");
            }
            if (intProcesoActivo == 6) {
                this.BGWLoadList.ReportProgress(30, "Cargando lista Habitaciones");
                EHabitacion obj = new EHabitacion();
                obj.Num_habitacion = this.txtFiltro.Text;
               e.Result = System2012.SystemUtils.MantenanceHabitacion.getHabitaciones(obj);
               this.BGWLoadList.ReportProgress(100, "Completado");
                
            }
            if (intProcesoActivo == 7)
            {
                this.BGWLoadList.ReportProgress(30, "Cargando lista de tarifas");
                EHabitacion obj = new EHabitacion();
                obj.Id_habitacion = idHbaitacion;
                e.Result = System2012.SystemUtils.MantenanceHabitacion.getListadoTarifas(obj);
                this.BGWLoadList.ReportProgress(100, "Completado");
            }
            if (intProcesoActivo == 8)
            {
                this.BGWLoadList.ReportProgress(30, "Cargando Estado");
                e.Result = SystemUtils.RecordManagerCommonList.GetEstados();
                this.BGWLoadList.ReportProgress(100, "Completado");
            }
        }

        private void BgwLoadListProgressChanged(object sender, System.ComponentModel.ProgressChangedEventArgs e)
        {
            barEditItem1.EditValue = e.ProgressPercentage;
        }

        private void BgwLoadListRunWorkerCompleted(object sender, System.ComponentModel.RunWorkerCompletedEventArgs e)
        {
            if (e.Result != null)
            {
                if (intProcesoActivo == 8)
                {
                    this.CbListEstado.Properties.DataSource = e.Result;
                   // BGWLoadList.RunWorkerAsync();
                }
                if (intProcesoActivo == 7)
                {
                    tblTarifa = (DataTable)e.Result;
                    gridControl1.DataSource = tblTarifa;// System2012.SystemUtils.MantenanceHabitacion.getHabitaciones();
                    gridControl1.RefreshDataSource();
                    intProcesoActivo = 8;
                    if (!BGWLoadList.IsBusy) BGWLoadList.RunWorkerAsync();
                }
                if (intProcesoActivo == 6)
                {
                     tblHotel=(DataTable)e.Result;
                    gridControl2.DataSource = tblHotel;// System2012.SystemUtils.MantenanceHabitacion.getHabitaciones();
                    gridControl2.RefreshDataSource();
                    intProcesoActivo = 7;
                    if (!BGWLoadList.IsBusy) BGWLoadList.RunWorkerAsync();
                    
                }
                if (intProcesoActivo == 5) {
                    CBMoneda.Properties.DataSource = e.Result;
                    intProcesoActivo = 6;
                    if (!BGWLoadList.IsBusy) BGWLoadList.RunWorkerAsync();
                }
                if (intProcesoActivo == 4)
                {
                    CbListPrecios.Properties.DataSource = e.Result;
                    intProcesoActivo = 5;
                    if (!BGWLoadList.IsBusy) BGWLoadList.RunWorkerAsync();
                }
                if (intProcesoActivo == 3)
                {
                    CbTipohabitacion.Properties.DataSource = e.Result;
                    intProcesoActivo = 4;
                    if (!BGWLoadList.IsBusy) BGWLoadList.RunWorkerAsync();
                                    }
                if (intProcesoActivo == 2)
                {
                    CbPisosHotel.Properties.DataSource = e.Result;
                    intProcesoActivo = 3;
                    if (!BGWLoadList.IsBusy) BGWLoadList.RunWorkerAsync();
                                    }
                if (intProcesoActivo == 1)
                {
                    CbHotel.Properties.DataSource = e.Result;
                    intProcesoActivo = 2;
                    if (!BGWLoadList.IsBusy) BGWLoadList.RunWorkerAsync();
                }
            }
        }
        #endregion

        private void FrmHabitacion_FormClosing(object sender, FormClosingEventArgs e)
        {
            System2012.SystemUtils.MantenanceHabitacion.ActualizarLista -= new LayerLogic.Hotel.LHabitacion.Update(ActualizarLista);
        }

        private void textEdit1_TextChanged(object sender, EventArgs e)
        {
            intProcesoActivo = 6;
            if (!BGWLoadList.IsBusy) BGWLoadList.RunWorkerAsync();
        }
        private void Editar(int index)
        {
            try
            {
                txtidHabitacion.Text = tblHotel.Rows[index]["id_habitacion"].ToString();
                txtNroHabitacion.Text = tblHotel.Rows[index]["num_habitacion"].ToString();
                txtNroCamas.Text = tblHotel.Rows[index]["num_camas"].ToString();
                CBMoneda.EditValue = Convert.ToInt32(tblHotel.Rows[index]["id_moneda"].ToString());
                CbHotel.EditValue = Convert.ToInt32(tblHotel.Rows[index]["id_hotel"].ToString());
                CbPisosHotel.EditValue = Convert.ToInt32(tblHotel.Rows[index]["id_pisohotel"].ToString());
                CbTipohabitacion.EditValue = Convert.ToInt32(tblHotel.Rows[index]["id_tipohabitacion"].ToString());
                CbListPrecios.EditValue = Convert.ToInt32(tblHotel.Rows[index]["id_lista"].ToString());

                idtarifa = int.Parse(tblHotel.Rows[index]["id_tarifa"].ToString());
                this.txtPrecio1.Text = tblHotel.Rows[index]["precio1"].ToString();
                this.txtPrecio2.Text = tblHotel.Rows[index]["precio2"].ToString();
                this.txtPrecio3.Text = tblHotel.Rows[index]["precio3"].ToString();
                this.txtPrecio4.Text = tblHotel.Rows[index]["precio4"].ToString();
                this.txtPrecio5.Text = tblHotel.Rows[index]["precio5"].ToString();
                CbListEstado.EditValue = Convert.ToInt32(tblHotel.Rows[index]["estado_tarifa"].ToString());

                if (tblHotel.Rows.Count > 0)
                {
                    if (this.gridView3.RowCount > 0)
                    {
                        if (index > 0)
                        {
                          //  intProcesoActivo = 7;
                           // this.idHbaitacion = int.Parse(tblHotel.Rows[index]["id_habitacion"].ToString());
                          //  if (!BGWLoadList.IsBusy) this.BGWLoadList.RunWorkerAsync();
                        }
                    }
                }
                Habilitar(true, false);
                this.operacion = 1;
            }
            catch (Exception ex)
            {
                MessageBox.Show(this,ex.Message);
            }
        }
        private void EditarTarifa(int index)
        {
            idtarifa = int.Parse(tblTarifa.Rows[index]["id_tarifa"].ToString());
            this.txtPrecio1.Text = this.tblTarifa.Rows[index]["precio1"].ToString();
            this.txtPrecio2.Text = tblTarifa.Rows[index]["precio2"].ToString();
            this.txtPrecio3.Text = tblTarifa.Rows[index]["precio3"].ToString();
            this.txtPrecio4.Text = tblTarifa.Rows[index]["precio4"].ToString();
            this.txtPrecio5.Text = tblTarifa.Rows[index]["precio5"].ToString();
            CbListEstado.EditValue = Convert.ToInt32(tblTarifa.Rows[index]["id_estado"].ToString());
           
            this.operacion = 1;
          
            this.Habilitar(false, true);
            CbListPrecios.Enabled = false;
        }
        private void CambiandoIndex(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e)
        {
            try
            {
               // Editar(e.FocusedRowHandle);

            }
            catch (Exception ex)
            {
                MessageBox.Show(this, ex.Message);
            }
        }

        private void gridView3_RowCellClick(object sender, DevExpress.XtraGrid.Views.Grid.RowCellClickEventArgs e)
        {
            Editar(e.RowHandle);
            intProcesoActivo = 7;
            this.idHbaitacion = int.Parse(tblHotel.Rows[e.RowHandle]["id_habitacion"].ToString());
            if (!BGWLoadList.IsBusy) this.BGWLoadList.RunWorkerAsync();
        }

        private void gridView1_FocusedRowChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e)
        {
            try
            {
                EditarTarifa(e.FocusedRowHandle);
            }
            catch (Exception ex)
            {
                MessageBox.Show(this, ex.Message);
            }
        }

        private void gridView1_RowCellClick(object sender, DevExpress.XtraGrid.Views.Grid.RowCellClickEventArgs e)
        {
            try
            {
                EditarTarifa(e.RowHandle);
            }
            catch (Exception ex)
            {
                MessageBox.Show(this, ex.Message);
            }
        }

        private void btnEditarTarifa_Click(object sender, EventArgs e)
        {
            NevaTarifa();
            intProcesoActivo = 8;
            if (!BGWLoadList.IsBusy) this.BGWLoadList.RunWorkerAsync();
        }

        private void btnActualizarTarifa_Click(object sender, EventArgs e)
        {
            GrabarTarifas();
        }

        private void barButtonItem4_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {

        }

        private void gridView3_RowStyle(object sender, DevExpress.XtraGrid.Views.Grid.RowStyleEventArgs e)
        {
            if (e.RowHandle >= 0)
            {
                GridView view = sender as GridView;
                if (view.GetRowCellValue(e.RowHandle, view.Columns["des_estado_tarifa"]).ToString() == "ELIMINADO")
                {
                    e.Appearance.BackColor = Color.Red;
                    e.Appearance.ForeColor = Color.Snow;
                }
                else
                {
                    if (view.GetRowCellValue(e.RowHandle, view.Columns["des_estado_tarifa"]).ToString() == "INACTIVO")
                    {
                        e.Appearance.BackColor = Color.FromArgb(0xFF, 0xFF, 0x99);
                        e.Appearance.ForeColor = Color.Black;
                    }
                }
                
            }
        }

        private void txtFiltro_EditValueChanged(object sender, EventArgs e)
        {

        }

       


       

        
    }
}